<?php


//-------------------- HELP-METHOD ---------------

function getDbConnection2()
{
	//DB authentifizierung 
	$auth = mysql_connect('localhost', 'root', '');
	if (!$auth)
	{
		die('Verbindung schlug fehl: ' . mysql_error());
	} else
	{
		print "Erfolgreich verbunden:";
	}

	// benutze DB geoCitiyGuide
	$db_selected = mysql_select_db('cityguide', $auth);
	if (!$db_selected)
	{
		die('Kann geoCitiyGuide nicht benutzen : ' . mysql_error());
	} else
	{
		print $db_selected;
	}
}

/**
 * Objektorientierter Zugriff auf die Datenbank
 */
function getDbConnection()
{
	// Datenbankverbindung aufbauen
	$db = new mysqli('localhost', 'root', '', 'cityguide');
	
	mysql_set_charset('utf8',$db); 

	if (mysqli_connect_errno()) {
    	printf("Connect failed: %s\n", mysqli_connect_error());
    	exit();
	}
	
}

//-------------------- USER ---------------


/**
 * Method for getting all attributes from current user 
 */
function getUser(string $emailaddress)
{
	$db = getDbConnection();

	if ($stmt = $db->prepare("SELECT firstname, lastname, emailaddress, lastLogin FROM USER, LOGIN where USER.l_id = LOGIN.l_id and LOGIN.username = ?")) {
  		$stmt->execute();
 		
	    //�Bound Result Prepared Statements� wird die R�ckgabe einer SELECT-Abfrage in definierten Variablen gespeichert 
	    $stmt->bind_result($firstname, $lastname, $emailaddress,  $lastLogin, $enabled);
	     while ($row = $stmt->fetch()) {
        	printf("%s, %s, %s, %s, %s\n", $firstname, $lastname, $emailaddress, $lastLogin, $enabled);
        	
        	//TODO hier in bean object stecken

		}
		// Statement schliessen
		$stmt->close();
	}
	// Datenbankverbindung schliessen
	$db->close();
}

/**
 * Mehtode zum Erstellen eines neuen Benutzers mit bestimmten Eigenschaften
 * 
 * String $firstname
 * String $lastname
 * String $emailaddress
 * String $password
 */
function addUser(string $firstname, string $lastname, string $emailaddress, string $password, boolean $enabled)
{
	// Datenbankverbindung aufbauen
	$db = getDbConnection();
	
	// Query vorbereiten
	if ($stmt = $db->prepare("INSERT INTO USERS (firstname, lastname, emailaddress, enabled) VALUES (?, ?, ?, ?)")){
		// Platzhalter befuellen
		//Bind Type	Column Type
		//i	Integer Column
		//s	String Column
		//d	Double and Float Column
		//b	Blob and Text Column
		$stmt->bind_param('ssss', $firstname, $lastname, $emailaddress, $password);
		// Query ausfuehren
		$stmt->execute();
		// Statement schliessen
		$stmt->close();
	}
	// Datenbankverbindung schliessen
	$db->close();
}


/**
 * Der Benutzer wird anhand der emailadresse authentifiziert und somit geloescht 
 */
function deleteUser(string $emailaddress)
{
	$db = getDbConnection();
	
	if ($stmt = $db->prepare("delete * FROM USER where emailaddress = ?")) {
		
		// Platzhalter bef�llen
		$stmt->bind_param('s', $emailaddress);
 		$stmt->execute();
 		
 		$rowsAffected = $stmt->affected_rows;
   		echo "Rows Affected: ".$rowsAffected;
 		
		// Statement schliessen
		$stmt->close();
	}
	// Datenbankverbindung schliessen
	$db->close();
}

/**
 * Anhand der Emailadresse wird das vergessene Passwort dem User zugeordnet
 */
function forgottPasswort(string $emailaddress)
{
	$db = getDbConnection();
	
	if ($stmt = $db->prepare("SELECT username, password, emailaddress FROM LOGIN, USER where emailaddress = ? and u_id = l_id")) {
  		$stmt->bind_param('s', $emailaddress);
  		$stmt->execute();
 		
	    //Bound Result Prepared Statements wird die Ruekgabe einer SELECT-Abfrage in definierten Variablen gespeichert 
	    $stmt->bind_result($username, $password, $emailaddress);
	     while ($row = $stmt->fetch()) {
        	printf("%s, %s, %s\n", $username, $password, $emailaddress);      	
        	//TODO hier in bean object stecken
        	
		}
		// Statement schliessen
		$stmt->close();
	}
	// Datenbankverbindung schliessen
	$db->close();

}



//-------------------- Holen der Tour Daten Land--> Stadt --> Tour ---------------

function getTourData(){
	$db = getDbConnection();
	
	$prepareStmt = "SELECT Country.name as country, CITY.name as city, Tour.name as tour  FROM COUNTRY, CITY, TOUR where COUNTRY.ci_id = CITY.ci_id and CITY.t_id = TOUR.t_id";

	if ($stmt = $db->prepare($prepareStmt)) {

		$stmt->bind_param('sss', $country, $city, $tour);
		$stmt->execute();
    	$stmt->bind_result($country, $city, $tour);
    	
    	while ($row = $stmt->fetch()) {
    		//TODO hier nochmal verpachen in ein Objekt
    		print  $country ."--" . $city ."--". $tour;	
    	}	
	}
}


//-------------------- TOUR ---------------

/**
 * Benutzer soll das Land, bzw. die dazugeh�rige Stadt oder/und die Sehensw�rdigkeit w�hlen k�nnen
 * Die ersten zwei sollen ueber eine Auswahlliste(DropDown Select) und das letzte ueber checkbox zur Verf�gung stehen 
 */
function getSightseeing(string $tour)
{	
	$db = getDbConnection();
	
	$prepareStmt = "SELECT SIGHT.name as tour, SIGHT.abstract,  SIGHT.details, SIGHT.pic FROM SIGHT, TOUR WHERE TOUR.name = ? and  TOUR.s_id = SEIGHT.s_id" ;
	
	if ($stmt = $db->prepare($prepareStmt)) {
  		$stmt->bind_param('ssssb', $tour, $abstract, $details, $pic);
  		$stmt->execute();
 	    $stmt->bind_result($tour, $abstract, $details, $pic);
	    
	    while ($row = $stmt->fetch()) {
        	printf("%s, %s, %s, %s\n", $tour, $abstract, $details, $enabled);    	
        	//TODO hier pruefen ob enabled == true ist
        
		}
		// Statement schliessen
		$stmt->close();
	}
	// Datenbankverbindung schliesssen
	$db->close();
	

}

function addSights($name, $abstract, $emailaddress, $img){
	
	// Datenbankverbindung aufbauen
	$db = new mysqli('localhost', 'root', '', 'cityguide');

	if (mysqli_connect_errno()) {
    	printf("Connect failed: %s\n", mysqli_connect_error());
    	exit();
	}
	
	// insert image as blob -- morgen Vladi fragen ob es noetig ist die Bilder inder DB zu speichern oder ob der Name reicht 
	$data = file_get_contents($img);
	// This is important to avoid a ' to accidentally close a string
	$data = mysql_real_escape_string($data);

	if ($stmt = $db->prepare("INSERT INTO cityguide.Sight(name, abstract, details, pic)  VALUES ('$name', '$abstract', '$data')")){
		
		$stmt->bind_param('ssss', $firstname, $lastname, $emailaddress, $password);
		// Query ausfuehren
		$stmt->execute();
		// Statement schliessen
		$stmt->close();
	}
	// Datenbankverbindung schliessen
	$db->close();
}

/**
 * Method to create a new tour with all needed informations 
 */
function createTour(string $tourId, string $sightname, float $latitude, float $longitude, string $abstract, string $details, string $city, string $country, File $pic)
{

}

function deleteTour(string $tourId)
{
	$db = getDbConnection();


}

function updateTourData()
{
	$db = getDbConnection();
}


?>